// pages/newsDetail/newsDetail.js

var api = require("../../config/api")
var app = getApp()
var auth = require("../../utils/auth") 

Page({

  /**
   * 页面的初始数据
   */
  data: {
    mainUser:{},
    news:null,
    isShowCommentModal:false,
    reply:{},
    showCommentMore:[],
  },
  onClickPageView(e){
    wx.navigateTo({
      url: '/pages/PageView/PageView' + "?userId=" + this.data.news.user.id,
    })
  },

  onClickFollow(e){
    var result = auth.is_login()
    if(!result){
      return
    }
    var userId = e.currentTarget.dataset.uid

      wx.request({
        url: api.FollowAPI,
          data:{
            beuser:userId
          },
          method:'POST',
          dataType:'json',
          header:{
            Authorization:app.globalData.userInfo?app.globalData.userInfo.token:null
          },
          responseType:'text',
          success:(res) => {
            if(res.statusCode==200){
              this.setData({
                ['news.is_follow']:false
              })
            }else if(res.statusCode==201){
              wx.showToast({
                title: '关注成功!',
              })
              this.setData({
                ['news.is_follow']:true
              })
            }else {
              wx.showToast({
                title: res.data.message,
                icon:'none'
              })
            }
          }
      })
  },

  doFavor(e){
      var result = auth.is_login()
      if(!result){
        return
      }

    var newId = e.currentTarget.dataset.news
    wx.request({
      url: api.FavorAPI,
      data:{
        news:newId
      },
      header:{
        Authorization:app.globalData.userInfo?app.globalData.userInfo.token:null
      },
      method:'POST',
      dataType:'json',
      responseType:'text',
      success:(res) => {
        if(res.statusCode==200){
          this.setData({
            ["news.is_favor"]:false
          })
        }else if(res.statusCode==201){
          this.setData({
            ["news.is_favor"]:true
          })
        }else {
            wx.showToast({
              title: '请求错误',
              icon:'error'
            })
        }
      }

    })

  },

  inputComment(e){
    this.setData({
      ["reply.content"]:e.detail.value
    })
  },

  onClickClearReply(){
    this.setData({
      reply:{
        depth:1,
        news:this.data.reply.news
      }
    })
  },
  onClickShowCommentModal(e){
    //判断是否已登录，如果未登录，则跳转到登录界面
    if(!app.globalData.userInfo){
      wx.navigateTo({
        url: '/pages/auth/auth',
      })
      return 
    }

    this.setData({
      isShowCommentModal:true,
      reply:e.currentTarget.dataset
    })
  },

  onClickCancelCommentModal(){
    this.setData({
      isShowCommentModal:false,
      reply:{}
    })
  }, 


  onClickPostComment(){
    if(!this.data.reply.content){
      wx.showToast({
        title: '评论不能为空',
        icon:'error'
      })
      return 
    }
    console.log(this.data.reply.rootindex)
    wx.request({
      url: api.CommentAPI,
      data:{
        news:this.data.reply.news,
        depth:this.data.reply.depth,
        reply:this.data.reply.reply,
        content:this.data.reply.content,
        root:this.data.reply.rid
      },
      method:'POST',
      header:{
        Authorization:app.globalData.userInfo?app.globalData.userInfo.token:null
      },
      dataType:'json',
      responseType:'text',
      success:(res) => {
         if(res.statusCode==201){
           if(this.data.reply.rootindex == undefined){
           //如果是根评论，应该添加到最外层列表
          //  this.data.news.comment.push()  //加到尾部
          //  this.data.news.comment.unshift() //加到头部
          var dataList = this.data.news.comment
            dataList.unshift(res.data)
            dataList[0].child = []
            this.setData({
              ["news.comment"]:dataList,
              ["news.commment_count"]:this.data.news.commment_count + 1
            })
            console.log(this.data.news.comment[0])
            this.onClickCancelCommentModal()
          } else {
            //有些评论，一开始是没有child的，这样直接获取，会出问题
            //前端做非空判断似乎不太行，在后端设置每个根评论带个child:[]
            var childCommentList = this.data.news.comment[this.data.reply.rootindex].child
              childCommentList.unshift(res.data)

              this.setData({
                ["news.comment["+ this.data.reply.rootindex +"].child"]:childCommentList,
                ["news.commment_count"]:this.data.news.commment_count + 1
              })
              this.onClickCancelCommentModal()
          }
            //如果是子评论，添加到二级评论的最上方
          // wx.navigateTo({
          //   url: '/pages/newsDetail/newsDetail?newsId='+ this.data.news.id,
          // })
         }

      }
    })
  },

  getMore(e){
   var rootId =  e.currentTarget.dataset.root;
   var idx = e.currentTarget.dataset.idx;
    wx.request({
      url: api.CommentAPI,
      data:{
        root:rootId
      },
      method:'GET',
      header:{
        Authorization:app.globalData.userInfo?app.globalData.userInfo.token:null
      },
      dataType:'json',
      responseType:'text',
      success:(res) => {
        //找到根评论下的child,把child替换为res.data
        console.log(res.data)
        var list = this.data.showCommentMore
        list[rootId] = true
        this.setData({
          ["news.comment["+ idx +"].child"]:res.data,
          showCommentMore:list
        })

      }

    })

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    var newId = options.newsId
    //向后端发请求，获取详细信息
    wx.request({
      url: api.NewsAPI + newId + "/",
      method:'GET',
      header:{
        Authorization:app.globalData.userInfo?app.globalData.userInfo.token:null
      },
      dataType:'json',
      responseType:'text',
      success:(res) => {
        console.log(res)
        this.setData({
          news:res.data,
          mainUser:app.globalData.userInfo?app.globalData.userInfo:null
        })

      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})